

my_list = [1,2,3]
my_list.insert(1, "heima")
print(my_list) # [1, 'heima', 2, 3]

# 列表追加单个元素
my_list.append(4)
print(my_list) # [1, 'heima', 2, 3, 4]
my_list.append([5,6]) # 会将[5,6]这个数组当做一个元素追加
print(my_list) # [1, 'heima', 2, 3, 4, [5, 6]]

# 列表追加多个元素
my_list.extend([7,8])
print(my_list) # [1, 'heima', 2, 3, 4, [5, 6], 7, 8]

# 删除元素（按下标）
# 有两种方式：del核pop都是按下标删除元素，二者效果是一样的
del my_list[0]
print(my_list) # ['heima', 2, 3, 4, [5, 6], 7, 8]
my_list.pop(1)
print(my_list) # ['heima', 3, 4, [5, 6], 7, 8]

# 删除元素（按元素）
my_list.remove(7)
print(my_list) # ['heima', 3, 4, [5, 6], 8]

# 清空列表
my_list.clear()
print(my_list) # []

# 统计某元素在表内的数量
my_list = [1,2,3,1,2,1,3]
print(my_list.count(1)) # 3

# 列表元素个数
print(len(my_list)) # 7

# 元组，和列表一样，但是不可修改
# 定义一个元组
t1 = () # ()  空元组
t2 = tuple() # ()  空元组
t3 = (1,"hello",True,"Jack","hello") # 包含多个元素的元组   (1, 'hello', True, 'Jack')
t4 = ("Rose",) # ('Rose',)  包含一个元素的元组，注意元素后面必须有逗号，否则不是元组类型
print(t1)
print(t2)
print(t3)
print(t4)
print("t3中下标为1的元素=", t3[1])
print("t3中元素\"hello\"的下标=", t3.index("hello"))
print("t3中元素\"hello\"的个数=", t3.count("hello"))
print("t3中元素总数=", len(t3))

# 元组的遍历
i = 0
print("while遍历元组t3=======")
while i < len(t3):
    print("- ", t3[i])
    i += 1

print("for遍历元组t3=======")
for e in t3:
    print("- ", e)


# 字符串
name = "hi,jack,morning,jack"
# 字符串也可按下标访问，得到字符
# 但字符串是一个元组，是不可变的，不可修改，修改字符、删除字符，append追加等操作均不可完成
print(name[0]) # h
print(name[-1]) # g
print(name.index("jack")) # 3

# 字符串替换，得到一个新的字符串对象
name2 = name.replace("jack", "rose")
print("name", name) # name hi,jack,morning,jack
print("name2", name2) # name2 hi,rose,morning,rose

# 字符串切分，返回一个列表
list2 = name.split(",")
print(type(list2)) # <class 'list'>
print(list2) # ['hi', 'jack', 'morning', 'jack']

# 去除前后字符
# 去除前后空格
s3 = "  hello, world "
print(s3.strip()) # hello, world
# 去除前后指定字符，按单个字符匹配"1"或"2"，而不是匹配整个字符串"12"，匹配成功的就会删除
s4 = "21hello121222"
print(s4.strip("12")) # hello

# 统计字符串中某个子串出现的次数
print(s4.count("21")) # 2

# 字符串长度
print(len(s4)) # 13

# 序列（列表、元组、字符串）切片
s5 = s4[1:4] # 1-3
print(s5) # 1he
s6 = s4[:2] # 0-1
print(s6) # 21
s7 = s4[1:6:2] # 下标1-5，步长为2
print(s7) # 1el
s8 = s4[:-1]
print(s8) # 21hello12122
s9 = s4[1:]
print(s9) # 1hello121222

# 字符串逆序
s10 = s4[::-1]
print("s4逆序=", s10)


# set集合
set1 = {1, "hello", 2, True, "world"}
set2 = set()
# 添加元素
set2.add(1)
set2.add("world")
print("set1=", set1)
print("set2=", set2)
# 删除元素
set1.remove("hello")
print("set1=", set1)
# 从集合中随机取一个元素
print(set1.pop())
# 清空集合
# set1.clear()
# print("set1=", set1) # set1= set()
# 求差集，set1不变，set2不变，返回一个新的set对象
print(set1.difference(set2)) # {2}
# 求差集，set1改变，保留差集内容，set2不变，返回None
print(set1.difference_update(set2)) # Nohe
print("set1中保留差集内容=", set1) # set1中保留差集内容= {2}
# 求并集
print(set.union(set2))
# set长度
print(len(set1))
# set遍历
for e in set1 :
    print("-", e)


# 字典、映射
map1 = {"jack":10,"rose":15}
map2 = {}
map3 = dict()
print(map1.get("jack"))
print(map1["rose"])























